Method and apparatus for controlling an animatronic device using a web enabled cellular phone

ABSTRACT

Methods and apparatus which enable remote control of animatronic devices over a network using a web enabled cell phone. For clients having limited programming capabilities such as a cell phone, signals created by pressing a key on a keypad are sent to an intermediate server which would have a mapping of a key to a desired animatronic control command and would convert the received signals to an animatronic control command and send the animatronic control command to a server for sending to an addressed animatronic device. A determination may be made if the animatronic control command is serviceable by the animatronic device. The animatronic control command is sent unaltered to a receiving client if the animatronic control command is serviceable by the animatronic device connected to the receiving client. The animatronic control command may be modified to a valid animatronic control command if the animatronic control command is not serviceable by the animatronic device.

FIELD OF THE INVENTION

[0001] This invention relates to the control of animatronic devices overa network. Specifically, this invention describes a method and apparatusfor controlling animatronic devices over a network using a web enabledcellular phone.

DESCRIPTION OF RELATED ART

[0002] There are currently various technologies that allow users tocontrol devices connected to a computer.

[0003] One current product that exists under the market name“Activemates”, as marketed by Microsoft Corporation, operates with acomputer and applicable software to allow a computer user to runprograms (content) associated with an animatronic device. This softwarecan send/play audio through the device, and also control or triggercontrol of the mouth on the device to animate it. However, this productprovides feedback based on the user's actions locally, and does notoffer control from another user, either directly or indirectly.Specifically, there is no provision for controlling the device over anetwork using a web enabled cell phone.

[0004] Accordingly, there is a need for a method and apparatus forcontrolling animatronic devices over a network using a web enabled cellphone.

SUMMARY OF THE INVENTION

[0005] What is disclosed are methods and apparatus which enable remotecontrol of animatronic devices over a network using a web enabled cellphone. For clients having limited programming capabilities such as acell phone, signals created by pressing a key on a keypad are sent to anintermediate server which would have a mapping of a key to a desiredanimatronic control command and would convert the received signals to ananimatronic control command and send the animatronic control command toa server for sending to an addressed animatronic device. In oneembodiment, the disclosed methods and apparatus determine if theanimatronic control command is serviceable by the animatronic device.The animatronic control command is sent unaltered to a receiving clientif the animatronic control command is serviceable by the animatronicdevice connected to the receiving client. The animatronic controlcommand may be modified to a valid animatronic control command if theanimatronic control command is not serviceable by the animatronicdevice.

BRIEF DESCRIPTION OF THE DRAWINGS

[0006]FIG. 1 is a system block diagram of one embodiment of a system inwhich the apparatus and method of the invention is used.

[0007]FIG. 2 illustrates an exemplary processor system or user computersystem that may implement embodiments of the present invention.

[0008]FIG. 3 illustrates a block diagram detailing portions of oneembodiment of the server 102 and client 106 of FIG. 1 configured inaccordance with one embodiment of the present invention.

[0009]FIG. 3a illustrates a block diagram detailing portions of oneembodiment of the server/client 106 a of FIG. 1 configured in accordancewith one embodiment of the present invention.

[0010]FIG. 4 is a flowchart of a server utilized when a web-enabledphone or similar device is used as a source of animatronic controlsignals.

[0011]FIG. 5 is a flowchart of an embodiment showing the flow at aweb-enabled phone generating commands according to the embodimentillustrated in FIG. 4.

DETAILED DESCRIPTION

[0012] Definitions

[0013] As discussed herein, a “computer system” is a product includingcircuitry capable of processing data. The computer system may include,but is not limited to, general purpose computer systems (e.g., server,laptop, desktop, palmtop, personal electronic devices, such as personaldigital assistants, cell phones, etc.), personal computers (PCs), hardcopy equipment (e.g., printer, plotter, fax machine, etc.), and thelike. In addition, a “communication link” or connection refers to themedium or channel of communication. The communication link or connectionmay include, but is not limited to, a telephone line, a modemconnection, an Internet connection, an Integrated Services DigitalNetwork (“ISDN”) connection, an Asynchronous Transfer Mode (ATM)connection, a frame relay connection, an Ethernet connection, a coaxialconnection, a fiber optic connection, satellite connections (e.g.Digital Satellite Services, etc.), wireless connections, radio frequency(RF) links, electromagnetic links, two way paging connections, etc., andcombinations thereof.

[0014] System Overview

[0015] A description of an exemplary system, which incorporatesembodiments of the present invention, is hereinafter described.

[0016] The present invention relates to a method and apparatus forcontrolling animatronic devices over a network.

[0017]FIG. 1 illustrates a system 100 configured in accordance with oneembodiment of the present invention, containing a server 102, a network104, and at least one client 106 with a set of animatronic devices 108and a server/client 106 a with no connected animatronic device.

[0018] As further described below, server 102 includes various hardwarecomponents. This includes a processor, memory, and one or more networkinterface cards. In addition, server 102 may also include a variety ofother hardware devices, including, but not limited to, storage devices(including floppy disk drives, hard disk drives, and optical diskdrives), input devices (including a mouse or keyboard), and outputdevices (including displays and printers).

[0019] Each of the computer systems in set of clients 106 andserver/client 106 a may include a variety of hardware components thatmay be similar to server 102 or may be a device configured for aspecific application such as a web enabled cell phone 107. In addition,each computer system may also be equipped with a data port forconnection of one or more animatronic and other devices. In oneembodiment, these include communications ports such as serial ports,which conform to the Institute of Electrical and Electronics Engineers(IEEE) RS-232 standard, IEEE-1284 parallel port standard, universalserial port (USB), or infra-red (IR) port for connection to set ofanimatronic devices 108.

[0020] Network 104 is a network that operates with a variety ofcommunications protocols to allow client-to-client and client-to-servercommunications. In one embodiment, network 104 is a network such as theInternet, implementing transfer control protocol/internet protocol(TCP/IP).

[0021] Set of animatronic devices 108 can be made of various materialsto form a toy device or the like. Each is controlled through the use ofa respective computer 106 to which it is connected.

[0022]FIG. 2 illustrates an exemplary computer system 200 thatimplements embodiments of the present invention. The computer system 200illustrates one embodiment of server 102 and set of clients 106 andserver/client 106 a (FIG. 1), although other embodiments may be readilyused.

[0023] Referring to FIG. 2, the computer system 200 comprises aprocessor or a central processing unit (CPU) 204. The illustrated CPU204 includes an Arithmetic Logic Unit (ALU) for performing computations,a collection of registers for temporary storage of data andinstructions, and a control unit for controlling operation for thesystem 200. In one embodiment, the CPU 204 includes any one of the x86,Pentium™, Pentium II™, and Pentium Pro™ microprocessors as marketed byIntel Corporation, the K-6 microprocessor as marketed by AMD, or the6x86MX microprocessor as marketed by Cyrix Corp. Further examplesinclude the Alpha™ processor as marketed by Compaq Corporation, the680X0 processor as marketed by Motorola; or the Power PC™ processor asmarketed by IBM. In addition, any of a variety of other processors,including those from Sun Microsystems, MIPS, IBM, Motorola, NEC, Cyrix,AMD, Nexgen and others may be used for implementing CPU 204. The CPU 204is not limited to microprocessor but may take on other forms such asmicrocontrollers, digital signal processors, reduced instruction setcomputers (RISC), application specific integrated circuits, and thelike. Although shown with one CPU 204, computer system 200 mayalternatively include multiple processing units.

[0024] The CPU 204 is coupled to a bus controller 212 by way of a CPUbus 208. The bus controller 212 includes a memory controller 216integrated therein, though the memory controller 216 may be external tothe bus controller 212. The memory controller 216 provides an interfacefor access by the CPU 204 or other devices to system memory 224 viamemory bus 220. In one embodiment, the system memory 224 includessynchronous dynamic random access memory (SDRAM). System memory 224 mayoptionally include any additional or alternative high speed memorydevice or memory circuitry. The bus controller 212 is coupled to asystem bus 228 that may be a peripheral component interconnect (PCI)bus, Industry Standard Architecture (ISA) bus, etc. Coupled to thesystem bus 228 are a graphics controller, a graphics engine or a videocontroller 232, a mass storage device 252, a communication interfacedevice 256, one or more input/output (I/O) devices 268 ₁-268 _(N), andan expansion bus controller 272. The video controller 232 is coupled toa video memory 236 (e.g., 8 Megabytes) and video BIOS 240, all of whichmay be integrated onto a single card or device, as designated by numeral244. The video memory 236 is used to contain display data for displayinginformation on the display screen 248, and the video BIOS 240 includescode and video services for controlling the video controller 232. Inanother embodiment, the video controller 232 is coupled to the CPU 204through an Advanced Graphics Port (AGP) bus.

[0025] The mass storage device 252 includes (but is not limited to) ahard disk, floppy disk, CD-ROM, DVD-ROM, tape, high density floppy, highcapacity removable media, low capacity removable media, solid statememory device, and combinations thereof. The communication interfacedevice 256 includes a network card, a modem interface, or a similarcommunications device for accessing network 264 via communications link260. In addition, communications interface device 256 includescommunication ports such as serial ports (e.g., IEEE RS-232), parallelports (e.g., IEEE-1284), Universal Serial Bus (USB) ports, and infra-red(IR) ports or other wireless port.

[0026] The I/O devices 268-268 _(N) include a keyboard, mouse,audio/sound card, printer, and the like. The expansion bus controller272 is coupled to nonvolatile memory 275, which includes system firmware276. The system firmware 276 includes system BIOS 82, which is forcontrolling, among other things, hardware devices in the computer system200. The system firmware 276 also includes ROM 280 and flash (or EEPROM)284. The expansion bus controller 272 is also coupled to expansionmemory 288 having RAM, ROM, and/or flash memory (not shown). The system200 may additionally include a memory module 290 that is coupled to thebus controller 212. In one embodiment, the memory module 290 comprises aROM 292 and flash (or EEPROM) 294.

[0027] As is familiar to those skilled in the art, the computer system200 further includes an operating system (OS) and at least oneapplication program, which in one embodiment, are loaded into systemmemory 224 from mass storage device 252 and launched after POST. The OSmay include any type of OS including, but not limited or restricted to,DOS, Windows™ (e.g., Windows 95™, Windows 98™, Windows NT™, WindowsME™), Unix, Linux, OS/2, Macintosh™ OS (e.g., OS/9), Xenix, etc. Theoperating system is a set of one or more programs which control thecomputer system's operation and the allocation of resources. Theapplication program is a set of one or more software programs thatperform a task desired by the user.

[0028] In accordance with the practices of persons skilled in the art ofcomputer programming, the present invention is described below withreference to symbolic representations of operations that are performedby computer system 200, unless indicated otherwise. Such operations aresometimes referred to as being computer-executed. It will be appreciatedthat operations that are symbolically represented include themanipulation by CPU 204 of electrical signals representing data bits andthe maintenance of data bits at memory locations in system memory 224,as well as other processing of signals. The memory locations where databits are maintained are physical locations that have particularelectrical, magnetic, optical, or organic properties corresponding tothe data bits.

[0029] When implemented in software, the elements of the presentinvention are essentially the code segments to perform the necessarytasks. The program or code segments can be stored in a processorreadable medium or transmitted by a computer data signal embodied in acarrier wave over a transmission medium or communication link. The“processor readable medium” may include any medium that can store ortransfer information. Examples of the processor readable medium includean electronic circuit, a semiconductor memory device, a ROM, a flashmemory, an erasable ROM (EROM), a floppy diskette, a CD-ROM, DVD orother optical disc, a hard disk, a fiber optic medium, a radio frequency(RF) link, etc. The computer data signal may include any signal that canpropagate over a transmission medium such as electronic networkchannels, optical fibers, air, electromagnetic, RF links, etc. The codesegments may be downloaded via computer networks such as the Internet,Intranet, etc.

[0030]FIG. 3 is a functional block diagram of server 102, including anoperating system 300, an http server 302, a set of interactive hypertextmark-up language (HTML) pages 304, a set of common gateway interface(CGI) scripts 306, an animatronic server 308, a database 310, and aconferencing application 312. In one embodiment, operating system 300provides network services for such network protocols as TCP/IP.

[0031] Server 102 provides the following capabilities:

[0032] Basic network communication with multiple remote clients (e.g.set of clients 106) simultaneously.

[0033] Performing authentication and authorization of individual clientsto communicate with animatronic server 308 on server 102 and/or otheranimatronic clients on remote clients (e.g., set of clients 106) thatare also simultaneously connected to server 102.

[0034] Servicing HTTP requests from clients (e.g., set of clients 106)on the World Wide Web and communicating with animatronic control clientbrowser plug-ins (e.g., animatronic plug-in 354).

[0035] Facilitating multiple users to communicate in both group andprivate conversations while connected to server 102.

[0036] HTTP server 302 is server software such as the product marketedunder the name of Netscape Enterprise Server by Netscape Corporation, orthe product marketed under the name of Internet Information Server byMicrosoft Corporation. HTTP server 302 is capable of communicating withHTTP web clients via the HTTP protocol. In this capacity, HTTP server302 is able to serve web clients with data (HTML, application outputdata, etc.).

[0037] Animatronic server 308 communicates with animatronic clients(e.g., animatronic client 356) and services their requests for controlof other animatronic devices found on the network. When animatronicserver 308 is initiated, it takes control of a TCP/IP service port andlistens for incoming connections from various clients over a networksuch as network 104. When animatronic server 308 sees an incomingconnection, it then attempts to confirm the validity of the client andthe data that is being sent to animatronic server 308. Once this hasbeen established, animatronic server 308 may then start a bidirectionalconversation using a custom language that both the server and the clientunderstand. Animatronic server 308 provides the following capabilities:

[0038] Provide information on animatronic devices (e.g., set ofanimatronic devices 108) with which it is able to communicate.

[0039] Act as a gatekeeper between client applications (e.g., betweenclient applications running on set of clients 106 and server/client 106a), thereby controlling access to the animatronic devices.

[0040] Understand and provide control of animatronic devices no matterhow sophisticated the device. For example, if a user were to attempt tomove the mouth of an animatronic doll on a client system and that dolldid not have a controllable mouth—animatronic server 308 may identifythis and return what components were actually controllable on the doll.Animatronic server 308 may also be configured to alter control requeststo allow the request to be serviced. For example, if the animatronicdevice from the example above has a moveable head, the command may bealtered to move the head for any mouth movements.

[0041] Communicate with scripts/plug-ins that allow a web-server such asHTTP server 302 to access animatronic server 308, thereby allowingmultiple users to access it through a web-client without having toinstall or use an animatronic client.

[0042] Set of CGI scripts 306 enable HTTP server 302 to communicate withanimatronic server 308, thereby allowing a web developer to create webcontent capable of accessing various animatronic devices via a standardHTTP client. In the simplest form, set of CGI scripts 306 allows server102 to request a list of active animatronic clients accessing the serverand whether they are currently communicating and/or available for accessvia server 102.

[0043] Database 310 contains data of various types and that, whencombined, forms content that is served to users via the server 102.Database 310, in one embodiment, is actually a collection of databasescontaining information that may be accessed through a standard such asopen database connectivity (ODBC) standard, as promoted by MicrosoftCorporation. Information that may be contained in database 310 includesa listing of all animatronic devices and respective clients to whichthey are connected, the capabilities of the animatronic devices (e.g.,what functions the animatronic devices have) and their status (e.g.,whether they are currently accessible or not), and any information forany users that correspond to a particular animatronic device.

[0044] Conferencing server 312 communicates with remote conferencingclients (e.g., conferencing client 358) and with animatronic server 308to provide conferencing capabilities between clients and control ofanimatronic devices by animatronic server 308 on those clients.

[0045] The functionality provided by HTTP server 302, animatronic server308, and conferencing server 312 may be implemented over severalcomputers. In addition, the services and data provided by database 310may also be implemented on one or more servers. Using multiple serversprovides scalability for both the applications using the data (e.g., thevarious servers-other than the database server), and the applicationsproviding the data (e.g., the database servers).

[0046]FIG. 3 also illustrates client 106, which contains an operatingsystem 350, including network drivers for such networks (such asTCP/IP), an HTTP client 352, an animatronic client 356, an animatronicplug-in 354, and a conferencing client 358. In one embodiment, alsoprovided is an animatronic device driver 360 which to the port (e.g.,serial, USB) used to transmit commands to the animatronic device.

[0047] Referring to FIG. 3, client 106 is capable of performing thefollowing functions:

[0048] Basic network communication with server 102 and with other remoteclients as directed by server 102.

[0049] Control of animatronic devices (e.g., animatronic device 108)connected to itself via an interface port and the processing of commandsequences sent to it from server 102 (e.g., animatronic server 308)before converting this data into commands that it sends to the connectedtoy device. Also provided is communication with the conferencingsoftware contained on server 102 with special command options to allowcontrol of other toy devices connected to other clients through server102.

[0050] Conferencing client 358 provides a program that interfaces withthe multi-user-conferencing facilities of server 102. In addition,conferencing client 358 coordinates with animatronic client 356 toprovide synchronized movement of any animatronic devices connected toclient 106 with what is being displayed by conferencing client 358.

[0051] HTTP client 352 is a software program that works with HTTP, andis also known as a “browser” application. Similar products include theproduct marketed by Netscape Corporation under the name NetscapeNavigator or the product marketed by Microsoft Corporation under thename Internet Explorer. Animatronic plug-in 354 is a plug-in applicationthat is specifically written to interface with HTTP client 352 toprovide an interface to animatronic client 356.

[0052] Animatronic device driver 360 provides a standard GUI basedinterface for applications so that an application will be able to openthe driver using a Win32 CreateFile call, and then the application willbe able to communicate using ReadFile, WriteFile, and DeviceIOControlcalls.

[0053] The driver will allow reading from the device and writing to thedevice, using vendor specific control transfers on the device's controlendpoint. These will be control transfers with data payloads.

[0054] Since this driver in a preferred embodiment works with a USBdevice, and communications with USB devices are asynchronous in nature,the driver will work asynchronously, using Driver Managed Queues.

[0055] The driver will be responsible for handling error conditions suchas Stalls and other “hard” errors gracefully, by letting the applicationknow that there was an error during request processing.

[0056] In one embodiment, server/client 106 a instead of being a client106 computer having an animatronic device connected to it, may be acomputer functioning as a web server which receives signals over theInternet from a web-enabled cellular phone or similar device. Thiscomputer operates to process the received signals and convert them tocommands of the type expected to be received by a client 106 with aconnected animatronic device and sends these commands to a server 102which sends the commands to a client 106 with a connected animatronicdevice.

[0057] Referring to FIGS. 1, 3, 3 a and 4, a web-enabled phone 107connects at step 401 to a web server/client 106 a having functionalitycorresponding to animatronic client 356. In addition, the webserver/client 106 a would have a module 359 for receiving commands ofthe type generated by the keys of a web enabled cell phone which aremapped to corresponding animatronic commands. In particular, afterconnection, the web server/client 106 a would send an html form to thedevice at step 403. This form would be displayed on the device and showa set of actions which the user may select by operation of keys on akeypad of the device. Upon selecting a desired action, which would thenbe transmitted to the web server/client 106 a, at step 405 the webserver/client 106 a would obtain the selected action, convert it to ananimatronic command via key mapping module 359 and animatronic client356 and at step 407, send the command to a server 102 which would thensend the command to the addressed client 106 with a connectedanimatronic device 108. At step 409, if the session had ended, theprocess would stop until another connection had been established or goback to step 405 to wait for another response from the web-enabled phone107 or other device.

[0058]FIG. 5 shows the corresponding flow at the web-enabled phone orsimilar device. At step 501, connection with a web server/client 106 ais established. The web server would then send an html form which wouldbe displayed on the device at step 503. The user would then make aselection, by for example, pressing an up or down button until a desiredaction is highlighted. Upon pressing a send button or equivalent key,the test 505 for a new request would be returned yes and the selectedaction would be sent to the web server/client 106 a at step 507.Otherwise, a test 509 would be made to see if the session was over. Ifno, the device would wait for a new request from the user at step 505.The flow shown in FIG. 5 would typically not require any programmingspecific to this function within the web-enabled phone, but insteadwould rely upon built-in functionality available by the device's abilityto receive and display an html form.

[0059] Although the present invention has been described in terms ofcertain preferred embodiments, other embodiments apparent to those ofordinary skill in the art are also within the scope of this invention.Accordingly, the scope of the invention is intended to be defined onlyby the claims that follow.

We claim:
 1. A method for remotely controlling an animatronic deviceusing a web enabled phone comprising the step of: operating a firstserver to communicate with a web enabled phone, said first serveroperating to convert signals received from said web enabled phone toanimatronic control signals and sending said animatronic control signalsto a second server for sending to a computer having a connectedanimatronic device.
 2. The method defined by claim 1 wherein if saidanimatronic control signals correspond to a movement which saidanimatronic device is incapable of performing, said commands are alteredto correspond to a movement which said animatronic device is capable ofperforming.